package 集合.泛型;


import java.util.ArrayList;
import java.util.Iterator;

public class 泛型 {

    /*
    在ArrayList与LinkedList等没有泛型是如何存储数据
     */
    public static void main(String[] args) {
//        创建集合的对象
        ArrayList list=new ArrayList();
//        添加数据
//        由于没有指定类型（泛型的作用），所以默认父类为Object，在此默认可以添加所有类型
//        但，对于多态来说，父类没有办法使用子类的特有功能。即不能使用 x.length;x.size等
        list.add(123);
        list.add("asd");
        list.add(new student("zhangsan",18));
//        迭代器遍历集合
        Iterator it= list.iterator();
        while (it.hasNext()){
            Object obj = it.next();//在此也是由于没有指定类型，所以使用Object
//            也只能使用一些基本功能
            System.out.println(obj);
        }


    }

}
class student{
    private String name;
    private int age;

    public student() {
    }

    public student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "student{name = " + name + ", age = " + age + "}";
    }
}
//    public class myArrayList<E>{}  不确定类型时可以在类名后加一个<>表示类型
/*
class MyArraylist<E>{
    Object[] obj=new Object[5];
    int size;
//    E:表示不确定的类型，该类型在类的后面已经定义
//    e：形参的名字，变量名
        public boolean add(E e){
            obj[size]=e;
            size++;
            return true;
        }
        public E get(int index) {return (E)obj[index];}

    @Override
    public String toString() {
        return super.toString();
    }
    在main方法调用时
    注意：对象 myarraylist<>中的泛型和  class myarraylist<>中的类型是一致的
    MyArraylist<String> list=new MyArraylist<>();
        list.add("aaa");
        list.add("aaa");
        list.add("aaa");
        sout(list);
}
 */


